Análisis del crimen en la ciudad de Chicago en los últimos 5 años

Introducción

Como se sabe simplemente siguiendo las noticias, la ciudad de Chicago es una de las mas criminalizadas de los Estados Unidos y, por tanto, del mundo. Por conocimiento popular, se asume desde hace mucho tiempo que la mayoria de crímenes violentos se concentran en los barrios del sur, casualmente los mas pobres de toda la ciudad. En este análisis se busca confirmar esa teoría o si en cambio, la distribución de crímenes es mas homogénea por la ciudad de lo que se piensa.

Los datos se leen desde BigQuery en Google Cloud Platform Yo he leido los datos y guardado en un .csv con el script que hay en esta misma carpeta llamado AdquisicionDeDatos.R Hay que mencionar que la tabla original contiene mas de 3 millones de filas de todos los años. Se seleccionan los últimos 5 años para poder hacer el procesamiento bien sin que la carga sobre el ordenador llegue al límite.

Una segunda tabla de datos llamada PoliceDistricts.csv se usa para obtener las localizaciones de los diferentes distritos, necesario para algunos análisis.

Lectura de los datos

Lo primero es leer los datos e importar las librerias y hacer una exploracion inicial con “Summary” y “Head”

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(data.table)
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
library(DataExplorer)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2     ✓ purrr   0.3.4
## ✓ tibble  3.0.3     ✓ stringr 1.4.0
## ✓ tidyr   1.1.2     ✓ forcats 0.5.0
## ✓ readr   1.3.1
## ── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x data.table::between() masks dplyr::between()
## x dplyr::filter()       masks stats::filter()
## x data.table::first()   masks dplyr::first()
## x dplyr::lag()          masks stats::lag()
## x data.table::last()    masks dplyr::last()
## x purrr::transpose()    masks data.table::transpose()
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Warning in doTryCatch(return(expr), name, parentenv, handler): unable to load shared object '/Library/Frameworks/R.framework/Resources/modules//R_X11.so':
##   dlopen(/Library/Frameworks/R.framework/Resources/modules//R_X11.so, 6): Library not loaded: /opt/X11/lib/libSM.6.dylib
##   Referenced from: /Library/Frameworks/R.framework/Versions/4.0/Resources/modules/R_X11.so
##   Reason: image not found
## Warning in system2("/usr/bin/otool", c("-L", shQuote(DSO)), stdout = TRUE):
## running command ''/usr/bin/otool' -L '/Library/Frameworks/R.framework/Resources/
## library/tcltk/libs//tcltk.so'' had status 1
## Could not load tcltk.  Will use slower R code instead.
## Loading required package: RSQLite
library("leaflet")
library("data.table")
library("sp")
library("rgdal")
## rgdal: version: 1.5-18, (SVN revision 1082)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.1.1, released 2020/06/22
## Path to GDAL shared files: /Library/Frameworks/R.framework/Versions/4.0/Resources/library/rgdal/gdal
## GDAL binary built with GEOS: TRUE 
## Loaded PROJ runtime: Rel. 6.3.1, February 10th, 2020, [PJ_VERSION: 631]
## Path to PROJ shared files: /Library/Frameworks/R.framework/Versions/4.0/Resources/library/rgdal/proj
## Linking to sp version:1.4-4
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
library("KernSmooth")
## KernSmooth 2.23 loaded
## Copyright M. P. Wand 1997-2009
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(leaflet)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggmap':
## 
##     wind
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(tidyverse)
library(RColorBrewer)
library(ggplot2)
library(viridis)
## Loading required package: viridisLite
library(magrittr)
## 
## Attaching package: 'magrittr'
## The following object is masked from 'package:ggmap':
## 
##     inset
## The following object is masked from 'package:purrr':
## 
##     set_names
## The following object is masked from 'package:tidyr':
## 
##     extract
library(tidyr)
chicago_crime <- read.table(file = "Datos/ChicagoCrime_5years.csv", #Name of text file.
                      sep = ",",                       #Separation character.
                      header = TRUE,                   #If column names are in the first row.
                      na.strings = "NA",               #Character to be marked as missing value.
                      stringsAsFactors = FALSE)

police_districts <- read.table(file = "Datos/Police_Stations.csv", #Name of text file.
                      sep = ",",                       #Separation character.
                      header = TRUE,                   #If column names are in the first row.
                      na.strings = "NA",               #Character to be marked as missing value.
                      stringsAsFactors = FALSE)
summary(chicago_crime)
##    unique_key          block           primary_type       description       
##  Min.   :   21714   Length:1116351     Length:1116351     Length:1116351    
##  1st Qu.:10486022   Class :character   Class :character   Class :character  
##  Median :11009594   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :10947551                                                           
##  3rd Qu.:11460320                                                           
##  Max.   :12202211                                                           
##                                                                             
##  location_description    district         date             arrest       
##  Length:1116351       Min.   : 1.00   Length:1116351     Mode :logical  
##  Class :character     1st Qu.: 6.00   Class :character   FALSE:869959   
##  Mode  :character     Median :11.00   Mode  :character   TRUE :246392   
##                       Mean   :11.37                                     
##                       3rd Qu.:17.00                                     
##                       Max.   :31.00                                     
##                       NA's   :1                                         
##       year         latitude       longitude     
##  Min.   :2015   Min.   :36.62   Min.   :-91.69  
##  1st Qu.:2016   1st Qu.:41.77   1st Qu.:-87.71  
##  Median :2017   Median :41.87   Median :-87.66  
##  Mean   :2017   Mean   :41.85   Mean   :-87.67  
##  3rd Qu.:2018   3rd Qu.:41.91   3rd Qu.:-87.63  
##  Max.   :2019   Max.   :42.02   Max.   :-87.53  
##                 NA's   :17205   NA's   :17205
head(chicago_crime)
##   unique_key                 block       primary_type
## 1   11695410    053XX N LOWELL AVE  CRIMINAL TRESPASS
## 2   11698581    052XX N HARLEM AVE DECEPTIVE PRACTICE
## 3   11698203      130XX S AVENUE O      OTHER OFFENSE
## 4   11710618 077XX W THORNDALE AVE DECEPTIVE PRACTICE
## 5   11697260    045XX S KARLOV AVE          OBSCENITY
## 6   11721567  111XX S TRUMBULL AVE      OTHER OFFENSE
##                           description         location_description district
## 1                          TO VEHICLE                       STREET       17
## 2                   COUNTERFEIT CHECK COMMERCIAL / BUSINESS OFFICE       16
## 3           VEHICLE TITLE/REG OFFENSE                       STREET        4
## 4 FINANCIAL IDENTITY THEFT OVER $ 300                    RESIDENCE       16
## 5                      OBSCENE MATTER                    RESIDENCE        8
## 6      OTHER CRIME INVOLVING PROPERTY                    RESIDENCE       22
##                  date arrest year latitude longitude
## 1 2019-05-22 01:37:00  FALSE 2019 41.97952 -87.73774
## 2 2019-05-07 09:00:00  FALSE 2019 41.97581 -87.80705
## 3 2019-05-24 12:15:00  FALSE 2019 41.65868 -87.53988
## 4 2019-05-17 13:08:00  FALSE 2019 41.98671 -87.82118
## 5 2019-05-21 00:00:00   TRUE 2019 41.81058 -87.72614
## 6 2019-06-05 20:00:00  FALSE 2019 41.69039 -87.70688
summary(police_districts)
##    DISTRICT         DISTRICT.NAME        ADDRESS              CITY          
##  Length:23          Length:23          Length:23          Length:23         
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     STATE                ZIP          WEBSITE             PHONE          
##  Length:23          Min.   :60608   Length:23          Length:23         
##  Class :character   1st Qu.:60614   Class :character   Class :character  
##  Mode  :character   Median :60626   Mode  :character   Mode  :character  
##                     Mean   :60626                                        
##                     3rd Qu.:60636                                        
##                     Max.   :60653                                        
##      FAX                TTY             X.COORDINATE      Y.COORDINATE    
##  Length:23          Length:23          Min.   :1138149   Min.   :1830851  
##  Class :character   Class :character   1st Qu.:1154910   1st Qu.:1862839  
##  Mode  :character   Mode  :character   Median :1167659   Median :1891772  
##                                        Mean   :1164579   Mean   :1889116  
##                                        3rd Qu.:1174074   3rd Qu.:1913962  
##                                        Max.   :1193131   Max.   :1943199  
##     LATITUDE       LONGITUDE        LOCATION        
##  Min.   :41.69   Min.   :-87.77   Length:23         
##  1st Qu.:41.78   1st Qu.:-87.71   Class :character  
##  Median :41.86   Median :-87.66   Mode  :character  
##  Mean   :41.85   Mean   :-87.67                     
##  3rd Qu.:41.92   3rd Qu.:-87.64                     
##  Max.   :42.00   Max.   :-87.57
head(police_districts)
##       DISTRICT  DISTRICT.NAME              ADDRESS    CITY STATE   ZIP
## 1            1        Central      1718 S State St Chicago    IL 60616
## 2            6        Gresham    7808 S Halsted St Chicago    IL 60620
## 3           11       Harrison   3151 W Harrison St Chicago    IL 60612
## 4           16 Jefferson Park 5151 N Milwaukee Ave Chicago    IL 60630
## 5 Headquarters   Headquarters  3510 S Michigan Ave Chicago    IL 60653
## 6           24    Rogers Park      6464 N Clark St Chicago    IL 60626
##                                                                           WEBSITE
## 1         http://home.chicagopolice.org/community/districts/1st-district-central/
## 2         http://home.chicagopolice.org/community/districts/6th-district-gresham/
## 3       http://home.chicagopolice.org/community/districts/11th-district-harrison/
## 4 http://home.chicagopolice.org/community/districts/16th-district-jefferson-park/
## 5                                                   http://home.chicagopolice.org
## 6    http://home.chicagopolice.org/community/districts/24th-district-rogers-park/
##          PHONE          FAX          TTY X.COORDINATE Y.COORDINATE LATITUDE
## 1 312-745-4290 312-745-3694 312-745-3693      1176569      1891772 41.85837
## 2 312-745-3617 312-745-3649 312-745-3639      1172283      1853023 41.75214
## 3 312-746-8386 312-746-4281 312-746-5151      1155244      1897149 41.87358
## 4 312-742-4480 312-742-4421 312-742-4423      1138481      1933660 41.97409
## 5                                             1177731      1881697 41.83070
## 6 312-744-5907 312-744-6928 312-744-7603      1164194      1943199 41.99976
##   LONGITUDE                        LOCATION
## 1 -87.62736  (41.8583725929, -87.627356171)
## 2 -87.64423 (41.7521368378, -87.6442289066)
## 3 -87.70549  (41.8735822883, -87.705488126)
## 4 -87.76615 (41.9740944511, -87.7661488432)
## 5 -87.62340 (41.8307016873, -87.6233953459)
## 6 -87.67132 (41.9997634842, -87.6713242922)

En la tabla se puede ver variables que podrían ser muy útiles a la hora de ver la distribución crímenes por la ciudad, como puede ser el tipo de crímen, el distrito o si se ha producido arresto o no. Además, obtenemos la localización de cada crimen para poder ponerlo en algún mapa.

Limpieza de Datos

Cambios de Formato

Como se observa del apartado anterior, hay muchos caracteres especiales que considero que hay que cambiar a descripciones mas simples. Tambien puede ser de utilidad dividir las fechas en día, mes y año, para poder hacer análisis mas en detalle. Para cambiar las descripciones usamos la funcion gsub() y para dividir las fechas usamos lubridate.

chicago_crime$location_description <- (gsub(","," ",chicago_crime$location_description))
chicago_crime$description <- gsub(":=","",chicago_crime$description)
chicago_crime$description <- gsub(":","",chicago_crime$description)
chicago_crime$description <- gsub("MANU/POSS. W/","",chicago_crime$description)
chicago_crime$description <- gsub(",","",chicago_crime$description)
chicago_crime$location_description <- gsub("(E.G.  UBER  LYFT)","",chicago_crime$location_description)
chicago_crime$location_description <- gsub(",","",chicago_crime$location_description)

chicago_crime <- chicago_crime %>%
    dplyr::mutate(year = lubridate::year(date), 
                month = lubridate::month(date), 
                day = lubridate::day(date))

head(chicago_crime)
##   unique_key                 block       primary_type
## 1   11695410    053XX N LOWELL AVE  CRIMINAL TRESPASS
## 2   11698581    052XX N HARLEM AVE DECEPTIVE PRACTICE
## 3   11698203      130XX S AVENUE O      OTHER OFFENSE
## 4   11710618 077XX W THORNDALE AVE DECEPTIVE PRACTICE
## 5   11697260    045XX S KARLOV AVE          OBSCENITY
## 6   11721567  111XX S TRUMBULL AVE      OTHER OFFENSE
##                           description         location_description district
## 1                          TO VEHICLE                       STREET       17
## 2                   COUNTERFEIT CHECK COMMERCIAL / BUSINESS OFFICE       16
## 3           VEHICLE TITLE/REG OFFENSE                       STREET        4
## 4 FINANCIAL IDENTITY THEFT OVER $ 300                    RESIDENCE       16
## 5                      OBSCENE MATTER                    RESIDENCE        8
## 6      OTHER CRIME INVOLVING PROPERTY                    RESIDENCE       22
##                  date arrest year latitude longitude month day
## 1 2019-05-22 01:37:00  FALSE 2019 41.97952 -87.73774     5  22
## 2 2019-05-07 09:00:00  FALSE 2019 41.97581 -87.80705     5   7
## 3 2019-05-24 12:15:00  FALSE 2019 41.65868 -87.53988     5  24
## 4 2019-05-17 13:08:00  FALSE 2019 41.98671 -87.82118     5  17
## 5 2019-05-21 00:00:00   TRUE 2019 41.81058 -87.72614     5  21
## 6 2019-06-05 20:00:00  FALSE 2019 41.69039 -87.70688     6   5

Hay valores nulos?

Usando la funcion plot_missing() de DataExplorer nos muestra si hay valores nulos en cualquiera de las variables.

plot_missing(chicago_crime)

chicago_crime <- na.omit(chicago_crime)

Como se ve en el gráfico, si que faltan datos. Como son muy pocos sobre el total, no creo que afecten mucho sobre el análisis eliminarlos, por lo que uso na.omit() para eliminar esas filas.

Agrupacion de Crimenes y cambios de formato

Como hay muchísimos tipos de crimenes, para hecer un análisis suficientemente buen, creo que simplificaría las cosas agrupar todos los posibles crimenes en 8 grupos. Esos grupos son: Assault, Criminal Damage, Deceptive Practice, Narcotics, Robbery, Theft, Violent Crime y Weapons Violation.

Seleccionaremos un subset (chicago_crime_subset) con esos grupos, quedando la reduccion de crimenes como se ilustran en los siguientes histogramas. Comprobando ademas que no faltan datos.

En cuanto a la tabla de distritos policiales, se cambia el distrito “HeadQuarters” por el “0”, para que todos sean numéricos.

chicago_crime$primary_type[chicago_crime$primary_type == "CRIMINAL TRESPASS"] <- "ROBBERY"
chicago_crime$primary_type[chicago_crime$primary_type == "BURGLARY"] <- "ROBBERY"
chicago_crime$primary_type[chicago_crime$primary_type == "MOTOR VEHICLE THEFT"] <- "THEFT"
chicago_crime$primary_type[chicago_crime$primary_type == "HOMICIDE"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "KIDNAPPING"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "BATTERY"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "INTIMIDATION"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "ARSON"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "PROSTITUTION"] <- "SEX OFFENSE"
chicago_crime$primary_type[chicago_crime$primary_type == "CRIM SEXUAL ASSAULT"] <- "SEX OFFENSE"
chicago_crime$primary_type[chicago_crime$primary_type == "OTHER NARCOTIC VIOLATION"] <- "NARCOTICS"
chicago_crime$primary_type <- factor(chicago_crime$primary_type)
chicago_crime$district <- factor(chicago_crime$district)

police_districts$DISTRICT[police_districts$DISTRICT == "Headquarters"] <- "0"
police_districts$DISTRICT <- as.factor(police_districts$DISTRICT)

chicago_crime_subset <- subset(chicago_crime, primary_type=="ASSAULT" | primary_type == "VIOLENT CRIME" | primary_type == "THEFT" | primary_type=="NARCOTICS" | primary_type == "WEAPONS VIOLATION" | primary_type=="ROBBERY" | primary_type == "CRIMINAL DAMAGE" | primary_type == "DECEPTIVE PRACTICE" )

chicago_crime_subset$primary_type <- factor(chicago_crime_subset$primary_type)
chicago_crime_subset$district <- factor(chicago_crime_subset$district)
chicago_crime_subset <- na.omit(chicago_crime_subset)

plot_missing(chicago_crime_subset)

ggplot(data = chicago_crime) +
  geom_bar(mapping = aes(x = primary_type)) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ggtitle("Crímenes Originales")

ggplot(data = chicago_crime_subset) +
  geom_bar(mapping = aes(x = primary_type)) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ggtitle("Crímenes del Subset")

En el último histograma se muestra la distribución de los crímenes con los que se va a trabajar. Es importante entender la diferencia de cantidad de casos entre los crímenes para el análisis que se va a realizar, ya que las comparaciones, probabilidades y conclusiones pueden acentuarse mas o menos dependiendo en la cantidad de casos de cada crímen.

Comprobando las dimensiones vemos como no hay una gran diferencia en numero de casos sobre el total, por lo que la agrupación es bastante favorable

dim(chicago_crime)
## [1] 1095801      13
dim(chicago_crime_subset)
## [1] 999672     13

Hacemos ahora diferentes subsets de cada crímen para analisis mas en detalle, que puede ser bastante útil. Esto puede ser muy útil para ver en que distritos se producen mas crímenes de un tipo, como se ve en los histogramas generados.

assault <- subset(chicago_crime_subset, primary_type=="ASSAULT")
violent_crime <- subset(chicago_crime_subset, primary_type=="VIOLENT CRIME")
theft <- subset(chicago_crime_subset, primary_type=="THEFT")
narcotics <- subset(chicago_crime_subset, primary_type=="NARCOTICS")
weapons_violation <- subset(chicago_crime_subset, primary_type=="WEAPONS VIOLATION")
robbery <- subset(chicago_crime_subset, primary_type=="ROBBERY")
criminal_damage <- subset(chicago_crime_subset, primary_type=="CRIMINAL DAMAGE")
deceptive_practice <- subset(chicago_crime_subset, primary_type=="DECEPTIVE PRACTICE")

ggplot(data = assault) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("ASSAULT BY DISTRICT")

ggplot(data = theft) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("THEFTS BY DISTRICT")

ggplot(data = violent_crime) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("VIOLENT CRIMES BY DISTRICT")

ggplot(data = narcotics) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("NARCOTIC CRIMES BY DISTRICT")

ggplot(data = weapons_violation) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("WEAPON-RELATED CRIMES BY DISTRICT")

ggplot(data = robbery) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("ROBBERIES BY DISTRICT")

ggplot(data = criminal_damage) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("CRIMINAL DAMAGE CRIMES BY DISTRICT")

ggplot(data = deceptive_practice) +
  geom_bar(mapping = aes(x = district)) +
  theme(axis.text.x = element_text(hjust = 1)) +
  ggtitle("DECEPTIVE PRACTICE CRIMES BY DISTRICT")

La ultima parte de la agrupacion es referida a distritos y arrestos. Voy a crear dos nuevas tablas con los casos donde no se ha dado ningún arresto y otras con los que sí se han dado arrestos.

A continuación creo una tabla con los porcentajes de arrestos, y visualizo esta informacion junto a los crimenes de cada distrito y el porcentaje de arresto en cada uno de ellos.

chicago_crime_subset$arrest <- factor(chicago_crime_subset$arrest)
districts_true <- sqldf('SELECT district, AVG(latitude) as avg_latitude,AVG(longitude) as avg_longitude, count(*) as arrest FROM chicago_crime_subset WHERE arrest LIKE "TRUE" GROUP BY district ORDER BY district')
districts_false <- sqldf('SELECT district, AVG(latitude) as avg_latitude,AVG(longitude) as avg_longitude, count(*) as no_arrest FROM chicago_crime_subset WHERE arrest LIKE "FALSE" GROUP BY district ORDER BY district')
districts_true$arrest <- as.numeric(districts_true$arrest)
districts_false$no_arrest <- as.numeric(districts_false$no_arrest)

arrest_percentage <- data.frame('District' = districts_false$district, 'PctArrest' = districts_true$arrest/(districts_true$arrest + districts_false$no_arrest), 'Crimes' = (districts_true$arrest + districts_false$no_arrest))

head(districts_false)
##   district avg_latitude avg_longitude no_arrest
## 1        1     41.87528     -87.62879     52855
## 2       10     41.85266     -87.71224     30826
## 3       11     41.88176     -87.71908     38892
## 4       12     41.88185     -87.66918     46676
## 5       14     41.91678     -87.69052     35704
## 6       15     41.88582     -87.75894     25686
head(districts_true)
##   district avg_latitude avg_longitude arrest
## 1        1     41.87445     -87.62949  11385
## 2       10     41.85642     -87.71370  13582
## 3       11     41.88200     -87.71997  28230
## 4       12     41.87919     -87.67305   7691
## 5       14     41.91692     -87.69123   4847
## 6       15     41.88497     -87.75600  11017
head(arrest_percentage)
##   District PctArrest Crimes
## 1        1 0.1772260  64240
## 2       10 0.3058458  44408
## 3       11 0.4205775  67122
## 4       12 0.1414645  54367
## 5       14 0.1195285  40551
## 6       15 0.3001662  36703
ggplot(data = arrest_percentage) +
  geom_col(mapping = aes(x = District, y = Crimes)) +
  geom_line(aes(x = District, y = PctArrest*100000, group = 1), color = "yellow") +
  scale_y_continuous(sec.axis = sec_axis(~./100000, name = "PctArrest")) +
  theme(axis.text.x = element_text(hjust = 1))

En un mapa se ve donde esta cada distrito.

setDT(districts_false)

chicago <- get_stamenmap(bbox = c(left = -88.0225, bottom = 41.5949, 
                                  right = -87.2713, top = 42.0677), 
                         zoom = 11)
## Source : http://tile.stamen.com/terrain/11/523/759.png
## Source : http://tile.stamen.com/terrain/11/524/759.png
## Source : http://tile.stamen.com/terrain/11/525/759.png
## Source : http://tile.stamen.com/terrain/11/526/759.png
## Source : http://tile.stamen.com/terrain/11/527/759.png
## Source : http://tile.stamen.com/terrain/11/523/760.png
## Source : http://tile.stamen.com/terrain/11/524/760.png
## Source : http://tile.stamen.com/terrain/11/525/760.png
## Source : http://tile.stamen.com/terrain/11/526/760.png
## Source : http://tile.stamen.com/terrain/11/527/760.png
## Source : http://tile.stamen.com/terrain/11/523/761.png
## Source : http://tile.stamen.com/terrain/11/524/761.png
## Source : http://tile.stamen.com/terrain/11/525/761.png
## Source : http://tile.stamen.com/terrain/11/526/761.png
## Source : http://tile.stamen.com/terrain/11/527/761.png
## Source : http://tile.stamen.com/terrain/11/523/762.png
## Source : http://tile.stamen.com/terrain/11/524/762.png
## Source : http://tile.stamen.com/terrain/11/525/762.png
## Source : http://tile.stamen.com/terrain/11/526/762.png
## Source : http://tile.stamen.com/terrain/11/527/762.png
## Source : http://tile.stamen.com/terrain/11/523/763.png
## Source : http://tile.stamen.com/terrain/11/524/763.png
## Source : http://tile.stamen.com/terrain/11/525/763.png
## Source : http://tile.stamen.com/terrain/11/526/763.png
## Source : http://tile.stamen.com/terrain/11/527/763.png
ggmap(chicago) +
geom_text(aes(x = LONGITUDE, y = LATITUDE, label = DISTRICT), data = police_districts)

CONCLUSIONES I:

Se puede ver la distribucion de los crímenes por distrito, deduciendo que crimen es mas “popular” en que distrito, además con ayuda del mapa de distritos, vemos por donde se situan mas o menos.

  • ASSAULT: El reparto parece mas o menos homogeneo, pero hay un mayor numero de crimenes en los distritos 4,6,7,8 y 11, situados al sur y oeste de la ciudad. Hay tambien un número considerable de asaltos en el centro y norte (A lo largo de la costa) de la ciudad.

  • CRIMINAL DAMAGE: En los delitos de daños, pasa similar a asaltos, pero claramente hay un distrito que sobresale, siendo este el distrito 8, situado al sur-oeste de la ciudad.

  • DECEPTIVE PRACTICE: Estos crimenes están claramente localizados en el centro y norte de la ciudad, las zonas mas ricas de la ciudad. Justo este crímen no es un crimen violento.

  • NARCOTICS: Este es el crímen mas claro de todos, prácticamente la totalidad de los crimenes se producen en os distritos 10,11 (El que mas con diferencia) y 15, al oeste de la ciudad.

  • ROBBERY: El reparto de este crimen es prácticament igual al de asaltos, con la salvedad que el distrito 8 tiene mas incidencia que el resto.

  • THEFT: Los robos sin violencia (Con violencia son ROBBERY), están bastante centrados en los distritos 1, 18 y 19, del centro y norte de la ciudad.

  • VIOLENT CRIMES: La mayoria de estos crímenes estan en el distrito 11, el mas afectado por las drogas. Por el resto de los distritos esta repartido mas homogéneamente, habiendo mas por el sur y oeste.

  • WEAPON VIOLATON: Los crímenes de armas están casi en su totalidad centrados en los distritos del sur y oeste (El 10 y 11).

  • ARRESTOS: En cuanto al porcentaje de arrestos, el mayor porcentaje se da en los distritos 10, 11 y 15, casualmente los mas afectados por narcoticos y crímenes violento, lo que parece indicar que estos crimenes son en los que mas arrestos hay. Salta a la vista que donde menos arrestos hay es en los distritos 1,2,18 y 19, los del centro, a pesar que hay un gran número de crímenes de robos y fraude (Deceptive Practice)

Viendo los siguientes mapas si parece que estas conclusiones van por buen camino. En el único por el que no parece ir muy encaminado el análisis en en asalto, ya que como vemos hay casi mas en el centro y norte de la ciudad que en el sur. Hay una explicación para ello, que una vez se confirme el reparto explicaré.

Distribucion De Crimenes y Arrestos

Para ampliar los histogramas de crimenes or distritos anteriores, se pueden visualizar esos números en el mapa, distribuidos por la ciudad.

En los siguiente gráficos se ve sobre el mapa a distribucion de cada crimen por la ciudad. Contrastándolo con el mapa anterior se puede comprobar como afecta cada crimen en cada zona de la ciudad.

# Por temas de limite de RAM, selecciono una muestra de 10000 casos, que para ilustrar tiene el mismo proposito.

leaflet()%>%
  addTiles() %>%
    addMarkers(data = assault[1:10000, ], group = "Assault", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addMarkers(data = criminal_damage[1:10000, ], group = "Criminal Damage", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addMarkers(data = deceptive_practice[1:10000, ], group = "Deceptive Practice", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addMarkers(data = narcotics[1:10000, ], group = "Narcotics", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addMarkers(data = robbery[1:10000, ], group = "Robberies", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addMarkers(data = theft[1:10000, ], group = "Thefts", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addMarkers(data = violent_crime[1:10000, ], group = "Violent Crimes", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addMarkers(data = weapons_violation, group = "Weapon Violations", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
    addLayersControl(overlayGroups = c("Assault","Criminal Damage", "Deceptive Practice", "Narcotics","Robberies", "Thefts", "Violent Crimes", "Weapon Violations"),options = layersControlOptions(collapsed = FALSE))
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively

Por ultimo en esta sección vamos a ver una primera relación entre los porcentajes de arrestos según crimen y según el distrito.

También muestro como se distribuyen los crímenes a lo largo de los últimos 5 años.

crimes <- ggplot(data = chicago_crime_subset, aes(x = factor(year), fill = primary_type))+
    geom_bar(stat = "count",position="dodge")+theme_classic()+
    xlab("Year")+
    ylab("Number of occurrences")+labs(fill = "Type of crimes")+
    scale_fill_brewer(palette="YlOrRd")
ggplotly(crimes)
barplot(table(chicago_crime_subset$primary_type), main="Arrestos por Tipo de Crimen", legend.text=FALSE, ylim=c(0,400000), las=2)
par(new=T)
barplot(table((chicago_crime_subset %>% filter(arrest == "TRUE"))[3]), legend.text=FALSE, col='blue', ylim=c(0,400000), las=2)
legend(x="top", legend=c("No arresto","Arresto"),
       fill=c("grey","blue")) 

barplot(table(chicago_crime_subset$district), main="Arrestos por Distrito", legend.text=FALSE, ylim=c(0,75000), las=2)
par(new=T)
barplot(table((chicago_crime_subset %>% filter(arrest == "TRUE"))[6]), legend.text=FALSE, col='blue', ylim=c(0,75000), las=2)
legend(x="top", legend=c("No arresto","Arresto"),
       fill=c("grey","blue"))

CONCLUSIONES II

  • A lo largo de los años, los crimenes de armas han crecido ligeramente, al igual que los asaltos. Los delitos de daños y robos con violencia han bajado un poco y los de narcoticos también, aunque el cambio mas significativo fue de 2015 a 2016. Robos sin violencia, fraude y crimenes violentos se han mantenido constantes a lo largo de los ultimos 5 años.

  • En cuanto al porcentaje de arrestos por crimen, parece muy claro que hay un porcentaje muchísimo mayor para narcoticos y crimenes de armas que para el resto. De hecho, mientras que para narcoticos es de mas del 90%, para crimenes de armas de mas del 75%, en el resto de crimenes es de menos del 30%. Muy significativo es que para robos sin violencia y fraude, los delitos situados en la zona menos desfavorecida de la ciudad (Distritos 1,2,18 y 19), el porcentaje es de menos del 20%.

  • El porcentaje por distritos concuerda bastante con los resultados anteriores ya que los distritos con porcentajes mas altos son el 11, 10 (Narcoticos y Armas) y los del sur. Es bastante llamativo que también ocurre lo mismo en el 1, cuando los crimenes mas comunes no son esos. En mi opinión creo que esto se debe a que aunque en menos medida que otros distritos, sigue habiendo crimenes de narcoticos. Además, la subida de la influencia de asaltos en ese distrito puede tener algo que ver también.

Estadistica

year <- table(chicago_crime_subset$year) 
print("Media de Crímenes por Año")
## [1] "Media de Crímenes por Año"
mean(year)
## [1] 199934.4
print("Mínimo de Crimenes en un Año")
## [1] "Mínimo de Crimenes en un Año"
min(year)
## [1] 195676
print("Maximo de Crimenes en un Año")
## [1] "Maximo de Crimenes en un Año"
max(year)
## [1] 204630
print("Mediana de los Crimenes")
## [1] "Mediana de los Crimenes"
median(year)
## [1] 200537
print("1er Cuartil de Crímenes por Año")
## [1] "1er Cuartil de Crímenes por Año"
quantile(year,0.25)
##    25% 
## 195772
print("3er Cuartil de Crímenes por Año")
## [1] "3er Cuartil de Crímenes por Año"
quantile(year,0.75)
##    75% 
## 203057
#BoxPlot
boxplot(c(year), las=2, main = "Crimenes por Año", col="orange")
grid(nx = NA, ny = NULL)

arrest <- c((chicago_crime_subset %>% filter(arrest == T))[9], (chicago_crime_subset %>% filter(arrest == F))[9])
boxplot(
  c(table(arrest[1]$year)),
  c(table(arrest[2]$year)),
  names = c("Arrestos", "No Arrestos"),
  las=1, main = "Comparacion de Arrestos y No Arrestos", col="orange"
)
grid(nx = NA, ny = NULL)

crimenes <- c((chicago_crime_subset %>% filter(primary_type == "ASSAULT"))[9],(chicago_crime_subset %>% filter(primary_type == "CRIMINAL DAMAGE"))[9],(chicago_crime_subset %>% filter(primary_type == "DECEPTIVE PRACTICE"))[9],(chicago_crime_subset %>% filter(primary_type == "NARCOTICS"))[9],(chicago_crime_subset %>% filter(primary_type == "ROBBERY"))[9],(chicago_crime_subset %>% filter(primary_type == "THEFT"))[9],(chicago_crime_subset %>% filter(primary_type == "VIOLENT CRIME"))[9],(chicago_crime_subset %>% filter(primary_type == "WEAPONS VIOLATION"))[9])

boxplot(
  c(table(crimenes[1]$year)),
  c(table(crimenes[2]$year)),
  c(table(crimenes[3]$year)),
  c(table(crimenes[4]$year)),
  c(table(crimenes[5]$year)),
  c(table(crimenes[6]$year)),
  c(table(crimenes[7]$year)),
  c(table(crimenes[8]$year)),
  names = c("ASSAULT", "CRIMINAL DAMAGE", "DECEPTIVE PRACTICE", "NARCOTICS", "ROBBERY", "THEFT", "VIOLENT CRIME", "WEAPONS VIOLATION"),
  las=1, main = "Comparacion de cada crimen", col="orange"
)
grid(nx = NA, ny = NULL)

CONCLUSIONES III

  • Los estadisticos muestran que el numero de crimenes por año es bastante similar en los ultimos 5 años, hay poca variacion de año a año.

  • Esto se confirma con el primer boxplot, que no muestra ningun outlier y la variacion es de 8.000 crimenes del año con menos crímenes al que mas. Teniendo en cuenta que hay alrededor de 200.000 crímenes por año, es una variación pequeña.

  • En cuanto a arrestos, a lo largo de los años los números es similar.

  • En cuanto a crimenes, crimenes de daños, narcoticos y crimenes violentos tienen outliers superiores en algún año y fraude por abajo. El resto su distribución es similar a lo largo de estos 5 años. En el apartado CONCLUSIONES II se intuía esto y mas o menos se ha cumplido.

Probabilidades

Relacion y Tablas de Probabilidad de Crimenes y Distritos

#chicago_crime_subset$district <- factor(chicago_crime_subset$district)
#chicago_crime_subset$primary_type <- factor(chicago_crime_subset$primary_type)
#chicago_crime_subset$arrest <- factor(chicago_crime_subset$arrest)
chicago_crime_subset$month <- factor(chicago_crime_subset$month)

mosaicplot(primary_type ~ district, data = chicago_crime_subset)

table(chicago_crime_subset$primary_type, chicago_crime_subset$district)
##                     
##                          1     2     3     4     5     6     7     8     9
##   ASSAULT             3181  3446  3935  4803  3625  4932  4484  4529  3626
##   CRIMINAL DAMAGE     3689  5712  6369  7568  6140  7475  6205 10133  6748
##   DECEPTIVE PRACTICE  9206  3402  2640  3153  2223  3765  2304  4987  2824
##   NARCOTICS            859  1658  2224  3500  2697  4119  5333  3135  3084
##   ROBBERY             5689  6135  8049  8265  6080  9700  7412 10482  6896
##   THEFT              35336 14833 10948 13484 10028 16537 10713 20066 13305
##   VIOLENT CRIME       6100  5766  6767  7470  6135  7918  8236  7423  6445
##   WEAPONS VIOLATION    180   730  1219  1827  1904  2230  2617  1211  1340
##                     
##                         10    11    12    14    15    16    17    18    19
##   ASSAULT             3377  4452  3477  2253  2829  2377  1775  2482  2464
##   CRIMINAL DAMAGE     5769  6576  7045  5304  4401  5093  4544  4226  5167
##   DECEPTIVE PRACTICE  2089  2543  4275  2999  1950  4170  2488  9037  6200
##   NARCOTICS           7374 20504  1753   717  6775  1354   767   906   926
##   ROBBERY             6010  8545  7341  5641  5082  4911  4454  5743  7105
##   THEFT              10717 12186 23631 19105  8133 12349 12378 34566 23565
##   VIOLENT CRIME       7181  9844  6299  4145  6219  3970  3486  6446  5957
##   WEAPONS VIOLATION   1891  2472   546   387  1314   234   309   232   201
##                     
##                         20    22    24    25    31
##   ASSAULT             1259  2280  2023  3790     2
##   CRIMINAL DAMAGE     2205  4621  4508  7126     3
##   DECEPTIVE PRACTICE  2182  2940  2568  4003    20
##   NARCOTICS            506  1501   910  3515     0
##   ROBBERY             2396  4704  4595  7415     0
##   THEFT               6940  9797 11153 16932     6
##   VIOLENT CRIME       2727  3989  3909  6588     3
##   WEAPONS VIOLATION    139   675   297  1223     0
addmargins(table(chicago_crime_subset$primary_type, chicago_crime_subset$district))
##                     
##                           1      2      3      4      5      6      7      8
##   ASSAULT              3181   3446   3935   4803   3625   4932   4484   4529
##   CRIMINAL DAMAGE      3689   5712   6369   7568   6140   7475   6205  10133
##   DECEPTIVE PRACTICE   9206   3402   2640   3153   2223   3765   2304   4987
##   NARCOTICS             859   1658   2224   3500   2697   4119   5333   3135
##   ROBBERY              5689   6135   8049   8265   6080   9700   7412  10482
##   THEFT               35336  14833  10948  13484  10028  16537  10713  20066
##   VIOLENT CRIME        6100   5766   6767   7470   6135   7918   8236   7423
##   WEAPONS VIOLATION     180    730   1219   1827   1904   2230   2617   1211
##   Sum                 64240  41682  42151  50070  38832  56676  47304  61966
##                     
##                           9     10     11     12     14     15     16     17
##   ASSAULT              3626   3377   4452   3477   2253   2829   2377   1775
##   CRIMINAL DAMAGE      6748   5769   6576   7045   5304   4401   5093   4544
##   DECEPTIVE PRACTICE   2824   2089   2543   4275   2999   1950   4170   2488
##   NARCOTICS            3084   7374  20504   1753    717   6775   1354    767
##   ROBBERY              6896   6010   8545   7341   5641   5082   4911   4454
##   THEFT               13305  10717  12186  23631  19105   8133  12349  12378
##   VIOLENT CRIME        6445   7181   9844   6299   4145   6219   3970   3486
##   WEAPONS VIOLATION    1340   1891   2472    546    387   1314    234    309
##   Sum                 44268  44408  67122  54367  40551  36703  34458  30201
##                     
##                          18     19     20     22     24     25     31    Sum
##   ASSAULT              2482   2464   1259   2280   2023   3790      2  71401
##   CRIMINAL DAMAGE      4226   5167   2205   4621   4508   7126      3 126627
##   DECEPTIVE PRACTICE   9037   6200   2182   2940   2568   4003     20  81968
##   NARCOTICS             906    926    506   1501    910   3515      0  74117
##   ROBBERY              5743   7105   2396   4704   4595   7415      0 142650
##   THEFT               34566  23565   6940   9797  11153  16932      6 346708
##   VIOLENT CRIME        6446   5957   2727   3989   3909   6588      3 133023
##   WEAPONS VIOLATION     232    201    139    675    297   1223      0  23178
##   Sum                 63638  51585  18354  30507  29963  50592     34 999672
prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$district))
##                     
##                                 1            2            3            4
##   ASSAULT            3.182044e-03 3.447131e-03 3.936291e-03 4.804576e-03
##   CRIMINAL DAMAGE    3.690210e-03 5.713874e-03 6.371090e-03 7.570483e-03
##   DECEPTIVE PRACTICE 9.209021e-03 3.403116e-03 2.640866e-03 3.154035e-03
##   NARCOTICS          8.592818e-04 1.658544e-03 2.224730e-03 3.501148e-03
##   ROBBERY            5.690867e-03 6.137013e-03 8.051641e-03 8.267712e-03
##   THEFT              3.534759e-02 1.483787e-02 1.095159e-02 1.348842e-02
##   VIOLENT CRIME      6.102001e-03 5.767892e-03 6.769220e-03 7.472451e-03
##   WEAPONS VIOLATION  1.800591e-04 7.302395e-04 1.219400e-03 1.827599e-03
##                     
##                                 5            6            7            8
##   ASSAULT            3.626189e-03 4.933618e-03 4.485471e-03 4.530486e-03
##   CRIMINAL DAMAGE    6.142015e-03 7.477453e-03 6.207036e-03 1.013632e-02
##   DECEPTIVE PRACTICE 2.223729e-03 3.766235e-03 2.304756e-03 4.988636e-03
##   NARCOTICS          2.697885e-03 4.120351e-03 5.334750e-03 3.136029e-03
##   ROBBERY            6.081995e-03 9.703183e-03 7.414432e-03 1.048544e-02
##   THEFT              1.003129e-02 1.654243e-02 1.071652e-02 2.007258e-02
##   VIOLENT CRIME      6.137013e-03 7.920598e-03 8.238702e-03 7.425436e-03
##   WEAPONS VIOLATION  1.904625e-03 2.230732e-03 2.617859e-03 1.211397e-03
##                     
##                                 9           10           11           12
##   ASSAULT            3.627190e-03 3.378108e-03 4.453461e-03 3.478141e-03
##   CRIMINAL DAMAGE    6.750214e-03 5.770893e-03 6.578158e-03 7.047312e-03
##   DECEPTIVE PRACTICE 2.824927e-03 2.089685e-03 2.543834e-03 4.276403e-03
##   NARCOTICS          3.085012e-03 7.376419e-03 2.051073e-02 1.753575e-03
##   ROBBERY            6.898263e-03 6.011972e-03 8.547804e-03 7.343409e-03
##   THEFT              1.330937e-02 1.072052e-02 1.219000e-02 2.363875e-02
##   VIOLENT CRIME      6.447115e-03 7.183356e-03 9.847230e-03 6.301067e-03
##   WEAPONS VIOLATION  1.340440e-03 1.891620e-03 2.472811e-03 5.461791e-04
##                     
##                                14           15           16           17
##   ASSAULT            2.253739e-03 2.829928e-03 2.377780e-03 1.775582e-03
##   CRIMINAL DAMAGE    5.305740e-03 4.402444e-03 5.094671e-03 4.545491e-03
##   DECEPTIVE PRACTICE 2.999984e-03 1.950640e-03 4.171368e-03 2.488816e-03
##   NARCOTICS          7.172353e-04 6.777223e-03 1.354444e-03 7.672517e-04
##   ROBBERY            5.642851e-03 5.083667e-03 4.912611e-03 4.455461e-03
##   THEFT              1.911127e-02 8.135668e-03 1.235305e-02 1.238206e-02
##   VIOLENT CRIME      4.146360e-03 6.221041e-03 3.971303e-03 3.487144e-03
##   WEAPONS VIOLATION  3.871270e-04 1.314431e-03 2.340768e-04 3.091014e-04
##                     
##                                18           19           20           22
##   ASSAULT            2.482814e-03 2.464808e-03 1.259413e-03 2.280748e-03
##   CRIMINAL DAMAGE    4.227387e-03 5.168695e-03 2.205723e-03 4.622516e-03
##   DECEPTIVE PRACTICE 9.039965e-03 6.202034e-03 2.182716e-03 2.940965e-03
##   NARCOTICS          9.062973e-04 9.263038e-04 5.061660e-04 1.501492e-03
##   ROBBERY            5.744884e-03 7.107331e-03 2.396786e-03 4.705543e-03
##   THEFT              3.457734e-02 2.357273e-02 6.942277e-03 9.800214e-03
##   VIOLENT CRIME      6.448115e-03 5.958955e-03 2.727895e-03 3.990309e-03
##   WEAPONS VIOLATION  2.320761e-04 2.010659e-04 1.390456e-04 6.752215e-04
##                     
##                                24           25           31
##   ASSAULT            2.023664e-03 3.791244e-03 2.000656e-06
##   CRIMINAL DAMAGE    4.509479e-03 7.128338e-03 3.000984e-06
##   DECEPTIVE PRACTICE 2.568843e-03 4.004313e-03 2.000656e-05
##   NARCOTICS          9.102986e-04 3.516153e-03 0.000000e+00
##   ROBBERY            4.596508e-03 7.417433e-03 0.000000e+00
##   THEFT              1.115666e-02 1.693756e-02 6.001969e-06
##   VIOLENT CRIME      3.910283e-03 6.590162e-03 3.000984e-06
##   WEAPONS VIOLATION  2.970974e-04 1.223401e-03 0.000000e+00
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$district)))
##                     
##                                 1            2            3            4
##   ASSAULT            3.182044e-03 3.447131e-03 3.936291e-03 4.804576e-03
##   CRIMINAL DAMAGE    3.690210e-03 5.713874e-03 6.371090e-03 7.570483e-03
##   DECEPTIVE PRACTICE 9.209021e-03 3.403116e-03 2.640866e-03 3.154035e-03
##   NARCOTICS          8.592818e-04 1.658544e-03 2.224730e-03 3.501148e-03
##   ROBBERY            5.690867e-03 6.137013e-03 8.051641e-03 8.267712e-03
##   THEFT              3.534759e-02 1.483787e-02 1.095159e-02 1.348842e-02
##   VIOLENT CRIME      6.102001e-03 5.767892e-03 6.769220e-03 7.472451e-03
##   WEAPONS VIOLATION  1.800591e-04 7.302395e-04 1.219400e-03 1.827599e-03
##   Sum                6.426108e-02 4.169568e-02 4.216483e-02 5.008643e-02
##                     
##                                 5            6            7            8
##   ASSAULT            3.626189e-03 4.933618e-03 4.485471e-03 4.530486e-03
##   CRIMINAL DAMAGE    6.142015e-03 7.477453e-03 6.207036e-03 1.013632e-02
##   DECEPTIVE PRACTICE 2.223729e-03 3.766235e-03 2.304756e-03 4.988636e-03
##   NARCOTICS          2.697885e-03 4.120351e-03 5.334750e-03 3.136029e-03
##   ROBBERY            6.081995e-03 9.703183e-03 7.414432e-03 1.048544e-02
##   THEFT              1.003129e-02 1.654243e-02 1.071652e-02 2.007258e-02
##   VIOLENT CRIME      6.137013e-03 7.920598e-03 8.238702e-03 7.425436e-03
##   WEAPONS VIOLATION  1.904625e-03 2.230732e-03 2.617859e-03 1.211397e-03
##   Sum                3.884474e-02 5.669460e-02 4.731952e-02 6.198633e-02
##                     
##                                 9           10           11           12
##   ASSAULT            3.627190e-03 3.378108e-03 4.453461e-03 3.478141e-03
##   CRIMINAL DAMAGE    6.750214e-03 5.770893e-03 6.578158e-03 7.047312e-03
##   DECEPTIVE PRACTICE 2.824927e-03 2.089685e-03 2.543834e-03 4.276403e-03
##   NARCOTICS          3.085012e-03 7.376419e-03 2.051073e-02 1.753575e-03
##   ROBBERY            6.898263e-03 6.011972e-03 8.547804e-03 7.343409e-03
##   THEFT              1.330937e-02 1.072052e-02 1.219000e-02 2.363875e-02
##   VIOLENT CRIME      6.447115e-03 7.183356e-03 9.847230e-03 6.301067e-03
##   WEAPONS VIOLATION  1.340440e-03 1.891620e-03 2.472811e-03 5.461791e-04
##   Sum                4.428252e-02 4.442257e-02 6.714402e-02 5.438484e-02
##                     
##                                14           15           16           17
##   ASSAULT            2.253739e-03 2.829928e-03 2.377780e-03 1.775582e-03
##   CRIMINAL DAMAGE    5.305740e-03 4.402444e-03 5.094671e-03 4.545491e-03
##   DECEPTIVE PRACTICE 2.999984e-03 1.950640e-03 4.171368e-03 2.488816e-03
##   NARCOTICS          7.172353e-04 6.777223e-03 1.354444e-03 7.672517e-04
##   ROBBERY            5.642851e-03 5.083667e-03 4.912611e-03 4.455461e-03
##   THEFT              1.911127e-02 8.135668e-03 1.235305e-02 1.238206e-02
##   VIOLENT CRIME      4.146360e-03 6.221041e-03 3.971303e-03 3.487144e-03
##   WEAPONS VIOLATION  3.871270e-04 1.314431e-03 2.340768e-04 3.091014e-04
##   Sum                4.056431e-02 3.671504e-02 3.446931e-02 3.021091e-02
##                     
##                                18           19           20           22
##   ASSAULT            2.482814e-03 2.464808e-03 1.259413e-03 2.280748e-03
##   CRIMINAL DAMAGE    4.227387e-03 5.168695e-03 2.205723e-03 4.622516e-03
##   DECEPTIVE PRACTICE 9.039965e-03 6.202034e-03 2.182716e-03 2.940965e-03
##   NARCOTICS          9.062973e-04 9.263038e-04 5.061660e-04 1.501492e-03
##   ROBBERY            5.744884e-03 7.107331e-03 2.396786e-03 4.705543e-03
##   THEFT              3.457734e-02 2.357273e-02 6.942277e-03 9.800214e-03
##   VIOLENT CRIME      6.448115e-03 5.958955e-03 2.727895e-03 3.990309e-03
##   WEAPONS VIOLATION  2.320761e-04 2.010659e-04 1.390456e-04 6.752215e-04
##   Sum                6.365888e-02 5.160193e-02 1.836002e-02 3.051701e-02
##                     
##                                24           25           31          Sum
##   ASSAULT            2.023664e-03 3.791244e-03 2.000656e-06 7.142443e-02
##   CRIMINAL DAMAGE    4.509479e-03 7.128338e-03 3.000984e-06 1.266685e-01
##   DECEPTIVE PRACTICE 2.568843e-03 4.004313e-03 2.000656e-05 8.199489e-02
##   NARCOTICS          9.102986e-04 3.516153e-03 0.000000e+00 7.414132e-02
##   ROBBERY            4.596508e-03 7.417433e-03 0.000000e+00 1.426968e-01
##   THEFT              1.115666e-02 1.693756e-02 6.001969e-06 3.468218e-01
##   VIOLENT CRIME      3.910283e-03 6.590162e-03 3.000984e-06 1.330666e-01
##   WEAPONS VIOLATION  2.970974e-04 1.223401e-03 0.000000e+00 2.318560e-02
##   Sum                2.997283e-02 5.060860e-02 3.401116e-05 1.000000e+00

A pesar de ser porcentajes muy bajos. Las principales conclusiones obtenidas en los apartados anteriores se mantienen, por ejemplo, vemos como el 2% del total de los crimenes son en el distrito 11 y de drogas y que, por ejemplo el 3.5% de los crimenes son robos sin violencia en el distrito 1, otra de las conclusiones obtenidas anteriormente.

Relacion y Tablas de Probabilidad de Crimenes y Arrestos

mosaicplot(primary_type ~ arrest, data = chicago_crime_subset)

table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest)
##                     
##                       FALSE   TRUE
##   ASSAULT             57517  13884
##   CRIMINAL DAMAGE    120041   6586
##   DECEPTIVE PRACTICE  77610   4358
##   NARCOTICS              42  74075
##   ROBBERY            116212  26438
##   THEFT              311171  35537
##   VIOLENT CRIME      104987  28036
##   WEAPONS VIOLATION    6346  16832
addmargins(table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest))
##                     
##                       FALSE   TRUE    Sum
##   ASSAULT             57517  13884  71401
##   CRIMINAL DAMAGE    120041   6586 126627
##   DECEPTIVE PRACTICE  77610   4358  81968
##   NARCOTICS              42  74075  74117
##   ROBBERY            116212  26438 142650
##   THEFT              311171  35537 346708
##   VIOLENT CRIME      104987  28036 133023
##   WEAPONS VIOLATION    6346  16832  23178
##   Sum                793926 205746 999672
prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest))
##                     
##                             FALSE         TRUE
##   ASSAULT            5.753587e-02 1.388856e-02
##   CRIMINAL DAMAGE    1.200804e-01 6.588161e-03
##   DECEPTIVE PRACTICE 7.763546e-02 4.359430e-03
##   NARCOTICS          4.201378e-05 7.409930e-02
##   ROBBERY            1.162501e-01 2.644667e-02
##   THEFT              3.112731e-01 3.554866e-02
##   VIOLENT CRIME      1.050214e-01 2.804520e-02
##   WEAPONS VIOLATION  6.348082e-03 1.683752e-02
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest)))
##                     
##                             FALSE         TRUE          Sum
##   ASSAULT            5.753587e-02 1.388856e-02 7.142443e-02
##   CRIMINAL DAMAGE    1.200804e-01 6.588161e-03 1.266685e-01
##   DECEPTIVE PRACTICE 7.763546e-02 4.359430e-03 8.199489e-02
##   NARCOTICS          4.201378e-05 7.409930e-02 7.414132e-02
##   ROBBERY            1.162501e-01 2.644667e-02 1.426968e-01
##   THEFT              3.112731e-01 3.554866e-02 3.468218e-01
##   VIOLENT CRIME      1.050214e-01 2.804520e-02 1.330666e-01
##   WEAPONS VIOLATION  6.348082e-03 1.683752e-02 2.318560e-02
##   Sum                7.941865e-01 2.058135e-01 1.000000e+00

Relacionando los crimenes con los arrestos también se ve como robos sin violencia y fraudes tienen muy poca tasa de arrestos mientras que crimenes mas violentos como pueden ser armas o drogas tienen una tasa de arresto mucho mayor.

Relacion y Tablas de Probabilidad de Crimenes y Meses

mosaicplot(primary_type ~ month, data = chicago_crime_subset)

table(chicago_crime_subset$primary_type, chicago_crime_subset$month)
##                     
##                          1     2     3     4     5     6     7     8     9
##   ASSAULT             4864  4709  5874  5862  6994  6867  6762  6530  6421
##   CRIMINAL DAMAGE     9296  8051 10013 10372 11465 11239 12252 12015 11034
##   DECEPTIVE PRACTICE  6927  6498  7101  6921  6883  6935  7082  7287  6723
##   NARCOTICS           6782  6392  7618  6733  6612  6040  6309  6221  5896
##   ROBBERY            12246  9208 10210 10579 11784 12076 13107 13527 12478
##   THEFT              26881 22594 25334 26208 29202 30844 32582 34007 30650
##   VIOLENT CRIME       9116  8633 11046 10661 13159 12712 12673 12243 12034
##   WEAPONS VIOLATION   1634  1408  1808  1895  2183  2155  2398  2298  2091
##                     
##                         10    11    12
##   ASSAULT             6163  5291  5064
##   CRIMINAL DAMAGE    11331  9936  9623
##   DECEPTIVE PRACTICE  6813  6298  6500
##   NARCOTICS           5549  5434  4531
##   ROBBERY            12887 12191 12357
##   THEFT              30678 28197 29531
##   VIOLENT CRIME      11610  9731  9405
##   WEAPONS VIOLATION   1885  1713  1710
addmargins(table(chicago_crime_subset$primary_type, chicago_crime_subset$month))
##                     
##                           1      2      3      4      5      6      7      8
##   ASSAULT              4864   4709   5874   5862   6994   6867   6762   6530
##   CRIMINAL DAMAGE      9296   8051  10013  10372  11465  11239  12252  12015
##   DECEPTIVE PRACTICE   6927   6498   7101   6921   6883   6935   7082   7287
##   NARCOTICS            6782   6392   7618   6733   6612   6040   6309   6221
##   ROBBERY             12246   9208  10210  10579  11784  12076  13107  13527
##   THEFT               26881  22594  25334  26208  29202  30844  32582  34007
##   VIOLENT CRIME        9116   8633  11046  10661  13159  12712  12673  12243
##   WEAPONS VIOLATION    1634   1408   1808   1895   2183   2155   2398   2298
##   Sum                 77746  67493  79004  79231  88282  88868  93165  94128
##                     
##                           9     10     11     12    Sum
##   ASSAULT              6421   6163   5291   5064  71401
##   CRIMINAL DAMAGE     11034  11331   9936   9623 126627
##   DECEPTIVE PRACTICE   6723   6813   6298   6500  81968
##   NARCOTICS            5896   5549   5434   4531  74117
##   ROBBERY             12478  12887  12191  12357 142650
##   THEFT               30650  30678  28197  29531 346708
##   VIOLENT CRIME       12034  11610   9731   9405 133023
##   WEAPONS VIOLATION    2091   1885   1713   1710  23178
##   Sum                 87327  86916  78791  78721 999672
prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$month))
##                     
##                                1           2           3           4
##   ASSAULT            0.004865596 0.004710545 0.005875927 0.005863923
##   CRIMINAL DAMAGE    0.009299050 0.008053642 0.010016285 0.010375403
##   DECEPTIVE PRACTICE 0.006929273 0.006500132 0.007103330 0.006923271
##   NARCOTICS          0.006784225 0.006394097 0.007620500 0.006735209
##   ROBBERY            0.012250018 0.009211021 0.010213350 0.010582471
##   THEFT              0.026889820 0.022601413 0.025342312 0.026216599
##   VIOLENT CRIME      0.009118991 0.008635833 0.011049624 0.010664498
##   WEAPONS VIOLATION  0.001634536 0.001408462 0.001808593 0.001895622
##                     
##                                5           6           7           8
##   ASSAULT            0.006996295 0.006869253 0.006764219 0.006532143
##   CRIMINAL DAMAGE    0.011468762 0.011242688 0.012256020 0.012018942
##   DECEPTIVE PRACTICE 0.006885258 0.006937275 0.007084324 0.007289391
##   NARCOTICS          0.006614169 0.006041982 0.006311070 0.006223041
##   ROBBERY            0.011787866 0.012079962 0.013111301 0.013531438
##   THEFT              0.029211581 0.030854120 0.032592690 0.034018158
##   VIOLENT CRIME      0.013163318 0.012716171 0.012677158 0.012247017
##   WEAPONS VIOLATION  0.002183716 0.002155707 0.002398787 0.002298754
##                     
##                                9          10          11          12
##   ASSAULT            0.006423107 0.006165022 0.005292736 0.005065662
##   CRIMINAL DAMAGE    0.011037620 0.011334718 0.009939260 0.009626157
##   DECEPTIVE PRACTICE 0.006725206 0.006815235 0.006300066 0.006502133
##   NARCOTICS          0.005897935 0.005550821 0.005435783 0.004532487
##   ROBBERY            0.012482094 0.012891228 0.012195000 0.012361054
##   THEFT              0.030660056 0.030688066 0.028206252 0.029540689
##   VIOLENT CRIME      0.012037948 0.011613809 0.009734193 0.009408086
##   WEAPONS VIOLATION  0.002091686 0.001885618 0.001713562 0.001710561
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$month)))
##                     
##                                1           2           3           4
##   ASSAULT            0.004865596 0.004710545 0.005875927 0.005863923
##   CRIMINAL DAMAGE    0.009299050 0.008053642 0.010016285 0.010375403
##   DECEPTIVE PRACTICE 0.006929273 0.006500132 0.007103330 0.006923271
##   NARCOTICS          0.006784225 0.006394097 0.007620500 0.006735209
##   ROBBERY            0.012250018 0.009211021 0.010213350 0.010582471
##   THEFT              0.026889820 0.022601413 0.025342312 0.026216599
##   VIOLENT CRIME      0.009118991 0.008635833 0.011049624 0.010664498
##   WEAPONS VIOLATION  0.001634536 0.001408462 0.001808593 0.001895622
##   Sum                0.077771509 0.067515145 0.079029922 0.079256996
##                     
##                                5           6           7           8
##   ASSAULT            0.006996295 0.006869253 0.006764219 0.006532143
##   CRIMINAL DAMAGE    0.011468762 0.011242688 0.012256020 0.012018942
##   DECEPTIVE PRACTICE 0.006885258 0.006937275 0.007084324 0.007289391
##   NARCOTICS          0.006614169 0.006041982 0.006311070 0.006223041
##   ROBBERY            0.011787866 0.012079962 0.013111301 0.013531438
##   THEFT              0.029211581 0.030854120 0.032592690 0.034018158
##   VIOLENT CRIME      0.013163318 0.012716171 0.012677158 0.012247017
##   WEAPONS VIOLATION  0.002183716 0.002155707 0.002398787 0.002298754
##   Sum                0.088310966 0.088897158 0.093195568 0.094158884
##                     
##                                9          10          11          12
##   ASSAULT            0.006423107 0.006165022 0.005292736 0.005065662
##   CRIMINAL DAMAGE    0.011037620 0.011334718 0.009939260 0.009626157
##   DECEPTIVE PRACTICE 0.006725206 0.006815235 0.006300066 0.006502133
##   NARCOTICS          0.005897935 0.005550821 0.005435783 0.004532487
##   ROBBERY            0.012482094 0.012891228 0.012195000 0.012361054
##   THEFT              0.030660056 0.030688066 0.028206252 0.029540689
##   VIOLENT CRIME      0.012037948 0.011613809 0.009734193 0.009408086
##   WEAPONS VIOLATION  0.002091686 0.001885618 0.001713562 0.001710561
##   Sum                0.087355653 0.086944518 0.078816852 0.078746829
##                     
##                              Sum
##   ASSAULT            0.071424427
##   CRIMINAL DAMAGE    0.126668547
##   DECEPTIVE PRACTICE 0.081994894
##   NARCOTICS          0.074141318
##   ROBBERY            0.142696805
##   THEFT              0.346821758
##   VIOLENT CRIME      0.133066646
##   WEAPONS VIOLATION  0.023185605
##   Sum                1.000000000

En cuanto a los crimenes por meses, si uno se fija en el gráfico de mosaico, no se puede sacar mucha información, pero si nos fijamos en la line SUM de las tablas por meses, se ve que hay un ligero aumento de crimenes en los meses de verano. En los meses mas fríos (Recordemos que en Chicago en invierno hace mucho frío, con medias de temperaturas en los meses de Enero y Febrero de hasta -15º C), la tasa de crimen en un mes es de un 6%-7% (Enero, Febrero) mientras que en los meses de verano (Julio-Agosto) llega a casi un 9.5%.

Relacion y Tablas de Probabilidad de Arrestos y Distritos

mosaicplot(arrest ~ district, data = chicago_crime_subset)

table(chicago_crime_subset$arrest, chicago_crime_subset$district)
##        
##             1     2     3     4     5     6     7     8     9    10    11    12
##   FALSE 52855 35227 34306 39494 29583 42771 34590 51694 35297 30826 38892 46676
##   TRUE  11385  6455  7845 10576  9249 13905 12714 10272  8971 13582 28230  7691
##        
##            14    15    16    17    18    19    20    22    24    25    31
##   FALSE 35704 25686 29229 26584 53719 44311 15374 25122 25472 40495    19
##   TRUE   4847 11017  5229  3617  9919  7274  2980  5385  4491 10097    15
addmargins(table(chicago_crime_subset$arrest, chicago_crime_subset$district))
##        
##              1      2      3      4      5      6      7      8      9     10
##   FALSE  52855  35227  34306  39494  29583  42771  34590  51694  35297  30826
##   TRUE   11385   6455   7845  10576   9249  13905  12714  10272   8971  13582
##   Sum    64240  41682  42151  50070  38832  56676  47304  61966  44268  44408
##        
##             11     12     14     15     16     17     18     19     20     22
##   FALSE  38892  46676  35704  25686  29229  26584  53719  44311  15374  25122
##   TRUE   28230   7691   4847  11017   5229   3617   9919   7274   2980   5385
##   Sum    67122  54367  40551  36703  34458  30201  63638  51585  18354  30507
##        
##             24     25     31    Sum
##   FALSE  25472  40495     19 793926
##   TRUE    4491  10097     15 205746
##   Sum    29963  50592     34 999672
prop.table(table(chicago_crime_subset$arrest, chicago_crime_subset$district))
##        
##                    1            2            3            4            5
##   FALSE 5.287234e-02 3.523856e-02 3.431726e-02 3.950696e-02 2.959271e-02
##   TRUE  1.138874e-02 6.457118e-03 7.847574e-03 1.057947e-02 9.252035e-03
##        
##                    6            7            8            9           10
##   FALSE 4.278503e-02 3.460135e-02 5.171096e-02 3.530858e-02 3.083611e-02
##   TRUE  1.390956e-02 1.271817e-02 1.027537e-02 8.973943e-03 1.358646e-02
##        
##                   11           12           14           15           16
##   FALSE 3.890476e-02 4.669131e-02 3.571571e-02 2.569443e-02 2.923859e-02
##   TRUE  2.823926e-02 7.693523e-03 4.848590e-03 1.102061e-02 5.230716e-03
##        
##                   17           18           19           20           22
##   FALSE 2.659272e-02 5.373663e-02 4.432554e-02 1.537904e-02 2.513024e-02
##   TRUE  3.618187e-03 9.922254e-03 7.276387e-03 2.980978e-03 5.386767e-03
##        
##                   24           25           31
##   FALSE 2.548036e-02 4.050829e-02 1.900623e-05
##   TRUE  4.492474e-03 1.010031e-02 1.500492e-05
addmargins(prop.table(table(chicago_crime_subset$arrest, chicago_crime_subset$district)))
##        
##                    1            2            3            4            5
##   FALSE 5.287234e-02 3.523856e-02 3.431726e-02 3.950696e-02 2.959271e-02
##   TRUE  1.138874e-02 6.457118e-03 7.847574e-03 1.057947e-02 9.252035e-03
##   Sum   6.426108e-02 4.169568e-02 4.216483e-02 5.008643e-02 3.884474e-02
##        
##                    6            7            8            9           10
##   FALSE 4.278503e-02 3.460135e-02 5.171096e-02 3.530858e-02 3.083611e-02
##   TRUE  1.390956e-02 1.271817e-02 1.027537e-02 8.973943e-03 1.358646e-02
##   Sum   5.669460e-02 4.731952e-02 6.198633e-02 4.428252e-02 4.442257e-02
##        
##                   11           12           14           15           16
##   FALSE 3.890476e-02 4.669131e-02 3.571571e-02 2.569443e-02 2.923859e-02
##   TRUE  2.823926e-02 7.693523e-03 4.848590e-03 1.102061e-02 5.230716e-03
##   Sum   6.714402e-02 5.438484e-02 4.056431e-02 3.671504e-02 3.446931e-02
##        
##                   17           18           19           20           22
##   FALSE 2.659272e-02 5.373663e-02 4.432554e-02 1.537904e-02 2.513024e-02
##   TRUE  3.618187e-03 9.922254e-03 7.276387e-03 2.980978e-03 5.386767e-03
##   Sum   3.021091e-02 6.365888e-02 5.160193e-02 1.836002e-02 3.051701e-02
##        
##                   24           25           31          Sum
##   FALSE 2.548036e-02 4.050829e-02 1.900623e-05 7.941865e-01
##   TRUE  4.492474e-03 1.010031e-02 1.500492e-05 2.058135e-01
##   Sum   2.997283e-02 5.060860e-02 3.401116e-05 1.000000e+00

En cuanto a arrestos y distritos se ve claramente como los distritos donde drogas y armas son los crímenes mas comunes tienen la tasa de arresto mas alta.

Probabilidad de que un crimen en el distrito 11 sea de Narcóticos

# Usando dplyr

chicago_crime_subset %>% 
  count(district, primary_type) %>%
  group_by(district) %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 181 x 4
## # Groups:   district [23]
##    district primary_type           n proporcion
##    <fct>    <fct>              <int>      <dbl>
##  1 1        ASSAULT             3181    0.0495 
##  2 1        CRIMINAL DAMAGE     3689    0.0574 
##  3 1        DECEPTIVE PRACTICE  9206    0.143  
##  4 1        NARCOTICS            859    0.0134 
##  5 1        ROBBERY             5689    0.0886 
##  6 1        THEFT              35336    0.550  
##  7 1        VIOLENT CRIME       6100    0.0950 
##  8 1        WEAPONS VIOLATION    180    0.00280
##  9 2        ASSAULT             3446    0.0827 
## 10 2        CRIMINAL DAMAGE     5712    0.137  
## # … with 171 more rows
distrito = chicago_crime_subset %>% 
  select(district,primary_type) %>%
  filter(district == "11")

prop.table(table(distrito$primary_type))
## 
##            ASSAULT    CRIMINAL DAMAGE DECEPTIVE PRACTICE          NARCOTICS 
##         0.06632699         0.09797086         0.03788624         0.30547362 
##            ROBBERY              THEFT      VIOLENT CRIME  WEAPONS VIOLATION 
##         0.12730550         0.18155001         0.14665832         0.03682846
chicago_crime_subset %>% 
  count(district, primary_type) %>%
  group_by(district) %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 181 x 4
## # Groups:   district [23]
##    district primary_type           n proporcion
##    <fct>    <fct>              <int>      <dbl>
##  1 1        ASSAULT             3181    0.0495 
##  2 1        CRIMINAL DAMAGE     3689    0.0574 
##  3 1        DECEPTIVE PRACTICE  9206    0.143  
##  4 1        NARCOTICS            859    0.0134 
##  5 1        ROBBERY             5689    0.0886 
##  6 1        THEFT              35336    0.550  
##  7 1        VIOLENT CRIME       6100    0.0950 
##  8 1        WEAPONS VIOLATION    180    0.00280
##  9 2        ASSAULT             3446    0.0827 
## 10 2        CRIMINAL DAMAGE     5712    0.137  
## # … with 171 more rows
distrito = chicago_crime_subset %>% 
  select(district,primary_type) %>%
  filter(district == "1")

prop.table(table(distrito$primary_type))
## 
##            ASSAULT    CRIMINAL DAMAGE DECEPTIVE PRACTICE          NARCOTICS 
##        0.049517435        0.057425280        0.143306351        0.013371731 
##            ROBBERY              THEFT      VIOLENT CRIME  WEAPONS VIOLATION 
##        0.088558531        0.550062267        0.094956413        0.002801993

La probabilidad de que un crimen del distrito 11 sea de drogas es la mayor de todas, como esperabamos con un 30.5%. Es superior incluso a robos sin violencia que, teniendo en cuenta que hay entre 4 y 5 veces mas crimenes de ese tipo totales que de drogas resalta aún mas la gran incidencia de los narcoticos en el oeste de la ciudad. Si lo comparamos con el distrito uno, el porcentaje de crimenes de drogas es de 1.3%, muchísimo menor que en el 11, y el de robos sin violencia es de un 55%.

Probabilidad de que un crimen en el distrito 11 acabe en arresto. Comparación con el resto de distritos

chicago_crime_subset %>% 
  count(district, arrest) %>%
  group_by(district) %>%
  filter(district == "11") %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 2 x 4
## # Groups:   district [1]
##   district arrest     n proporcion
##   <fct>    <fct>  <int>      <dbl>
## 1 11       FALSE  38892      0.579
## 2 11       TRUE   28230      0.421
chicago_crime_subset %>% 
  count(district, arrest) %>%
  group_by(district) %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 46 x 4
## # Groups:   district [23]
##    district arrest     n proporcion
##    <fct>    <fct>  <int>      <dbl>
##  1 1        FALSE  52855      0.823
##  2 1        TRUE   11385      0.177
##  3 2        FALSE  35227      0.845
##  4 2        TRUE    6455      0.155
##  5 3        FALSE  34306      0.814
##  6 3        TRUE    7845      0.186
##  7 4        FALSE  39494      0.789
##  8 4        TRUE   10576      0.211
##  9 5        FALSE  29583      0.762
## 10 5        TRUE    9249      0.238
## # … with 36 more rows
chicago_crime_subset %>% 
  count(district, arrest) %>%
  group_by(district) %>%
  filter(district == "1") %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 2 x 4
## # Groups:   district [1]
##   district arrest     n proporcion
##   <fct>    <fct>  <int>      <dbl>
## 1 1        FALSE  52855      0.823
## 2 1        TRUE   11385      0.177
chicago_crime_subset %>% 
  count(district, arrest) %>%
  group_by(district) %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 46 x 4
## # Groups:   district [23]
##    district arrest     n proporcion
##    <fct>    <fct>  <int>      <dbl>
##  1 1        FALSE  52855      0.823
##  2 1        TRUE   11385      0.177
##  3 2        FALSE  35227      0.845
##  4 2        TRUE    6455      0.155
##  5 3        FALSE  34306      0.814
##  6 3        TRUE    7845      0.186
##  7 4        FALSE  39494      0.789
##  8 4        TRUE   10576      0.211
##  9 5        FALSE  29583      0.762
## 10 5        TRUE    9249      0.238
## # … with 36 more rows

La probabilidad de que se produzca un arresto es de un 42%, que teniendo en cuenta que el resto de distritos tienen una media de un 20% aproximadamente (Sin contar los distritos 10 y 15, que estan tambien muy afectados por las drogas y su tasa es del 30%), también demuestra la gran importancia de los crimenes de drogas en esta zona. Si lo comparamos con el distrito 1, la diferencia es abismal, teniendo este último una tasa de arrestos de un 17.7%.

Cual es la probabilidad de que sea a la vez un crimen de armas y en el distrito 18? Y en ese caso, cual es la proporcion de arrestos? Comparación con un distrito del sur.

prop.table(table(chicago_crime_subset$primary_type))
## 
##            ASSAULT    CRIMINAL DAMAGE DECEPTIVE PRACTICE          NARCOTICS 
##         0.07142443         0.12666855         0.08199489         0.07414132 
##            ROBBERY              THEFT      VIOLENT CRIME  WEAPONS VIOLATION 
##         0.14269680         0.34682176         0.13306665         0.02318560
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$district)))
##                     
##                                 1            2            3            4
##   ASSAULT            3.182044e-03 3.447131e-03 3.936291e-03 4.804576e-03
##   CRIMINAL DAMAGE    3.690210e-03 5.713874e-03 6.371090e-03 7.570483e-03
##   DECEPTIVE PRACTICE 9.209021e-03 3.403116e-03 2.640866e-03 3.154035e-03
##   NARCOTICS          8.592818e-04 1.658544e-03 2.224730e-03 3.501148e-03
##   ROBBERY            5.690867e-03 6.137013e-03 8.051641e-03 8.267712e-03
##   THEFT              3.534759e-02 1.483787e-02 1.095159e-02 1.348842e-02
##   VIOLENT CRIME      6.102001e-03 5.767892e-03 6.769220e-03 7.472451e-03
##   WEAPONS VIOLATION  1.800591e-04 7.302395e-04 1.219400e-03 1.827599e-03
##   Sum                6.426108e-02 4.169568e-02 4.216483e-02 5.008643e-02
##                     
##                                 5            6            7            8
##   ASSAULT            3.626189e-03 4.933618e-03 4.485471e-03 4.530486e-03
##   CRIMINAL DAMAGE    6.142015e-03 7.477453e-03 6.207036e-03 1.013632e-02
##   DECEPTIVE PRACTICE 2.223729e-03 3.766235e-03 2.304756e-03 4.988636e-03
##   NARCOTICS          2.697885e-03 4.120351e-03 5.334750e-03 3.136029e-03
##   ROBBERY            6.081995e-03 9.703183e-03 7.414432e-03 1.048544e-02
##   THEFT              1.003129e-02 1.654243e-02 1.071652e-02 2.007258e-02
##   VIOLENT CRIME      6.137013e-03 7.920598e-03 8.238702e-03 7.425436e-03
##   WEAPONS VIOLATION  1.904625e-03 2.230732e-03 2.617859e-03 1.211397e-03
##   Sum                3.884474e-02 5.669460e-02 4.731952e-02 6.198633e-02
##                     
##                                 9           10           11           12
##   ASSAULT            3.627190e-03 3.378108e-03 4.453461e-03 3.478141e-03
##   CRIMINAL DAMAGE    6.750214e-03 5.770893e-03 6.578158e-03 7.047312e-03
##   DECEPTIVE PRACTICE 2.824927e-03 2.089685e-03 2.543834e-03 4.276403e-03
##   NARCOTICS          3.085012e-03 7.376419e-03 2.051073e-02 1.753575e-03
##   ROBBERY            6.898263e-03 6.011972e-03 8.547804e-03 7.343409e-03
##   THEFT              1.330937e-02 1.072052e-02 1.219000e-02 2.363875e-02
##   VIOLENT CRIME      6.447115e-03 7.183356e-03 9.847230e-03 6.301067e-03
##   WEAPONS VIOLATION  1.340440e-03 1.891620e-03 2.472811e-03 5.461791e-04
##   Sum                4.428252e-02 4.442257e-02 6.714402e-02 5.438484e-02
##                     
##                                14           15           16           17
##   ASSAULT            2.253739e-03 2.829928e-03 2.377780e-03 1.775582e-03
##   CRIMINAL DAMAGE    5.305740e-03 4.402444e-03 5.094671e-03 4.545491e-03
##   DECEPTIVE PRACTICE 2.999984e-03 1.950640e-03 4.171368e-03 2.488816e-03
##   NARCOTICS          7.172353e-04 6.777223e-03 1.354444e-03 7.672517e-04
##   ROBBERY            5.642851e-03 5.083667e-03 4.912611e-03 4.455461e-03
##   THEFT              1.911127e-02 8.135668e-03 1.235305e-02 1.238206e-02
##   VIOLENT CRIME      4.146360e-03 6.221041e-03 3.971303e-03 3.487144e-03
##   WEAPONS VIOLATION  3.871270e-04 1.314431e-03 2.340768e-04 3.091014e-04
##   Sum                4.056431e-02 3.671504e-02 3.446931e-02 3.021091e-02
##                     
##                                18           19           20           22
##   ASSAULT            2.482814e-03 2.464808e-03 1.259413e-03 2.280748e-03
##   CRIMINAL DAMAGE    4.227387e-03 5.168695e-03 2.205723e-03 4.622516e-03
##   DECEPTIVE PRACTICE 9.039965e-03 6.202034e-03 2.182716e-03 2.940965e-03
##   NARCOTICS          9.062973e-04 9.263038e-04 5.061660e-04 1.501492e-03
##   ROBBERY            5.744884e-03 7.107331e-03 2.396786e-03 4.705543e-03
##   THEFT              3.457734e-02 2.357273e-02 6.942277e-03 9.800214e-03
##   VIOLENT CRIME      6.448115e-03 5.958955e-03 2.727895e-03 3.990309e-03
##   WEAPONS VIOLATION  2.320761e-04 2.010659e-04 1.390456e-04 6.752215e-04
##   Sum                6.365888e-02 5.160193e-02 1.836002e-02 3.051701e-02
##                     
##                                24           25           31          Sum
##   ASSAULT            2.023664e-03 3.791244e-03 2.000656e-06 7.142443e-02
##   CRIMINAL DAMAGE    4.509479e-03 7.128338e-03 3.000984e-06 1.266685e-01
##   DECEPTIVE PRACTICE 2.568843e-03 4.004313e-03 2.000656e-05 8.199489e-02
##   NARCOTICS          9.102986e-04 3.516153e-03 0.000000e+00 7.414132e-02
##   ROBBERY            4.596508e-03 7.417433e-03 0.000000e+00 1.426968e-01
##   THEFT              1.115666e-02 1.693756e-02 6.001969e-06 3.468218e-01
##   VIOLENT CRIME      3.910283e-03 6.590162e-03 3.000984e-06 1.330666e-01
##   WEAPONS VIOLATION  2.970974e-04 1.223401e-03 0.000000e+00 2.318560e-02
##   Sum                2.997283e-02 5.060860e-02 3.401116e-05 1.000000e+00
chicago_crime_subset %>% 
  count(district, arrest, primary_type) %>%
  group_by(district, primary_type) %>%
  filter(district == "18") %>%
  filter(primary_type == "WEAPONS VIOLATION") %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 2 x 5
## # Groups:   district, primary_type [1]
##   district arrest primary_type          n proporcion
##   <fct>    <fct>  <fct>             <int>      <dbl>
## 1 18       FALSE  WEAPONS VIOLATION    52      0.224
## 2 18       TRUE   WEAPONS VIOLATION   180      0.776
chicago_crime_subset %>% 
  count(district, arrest, primary_type) %>%
  group_by(district, primary_type) %>%
  filter(district == "8") %>%
  filter(primary_type == "WEAPONS VIOLATION") %>%
  mutate(proporcion = prop.table(n))
## # A tibble: 2 x 5
## # Groups:   district, primary_type [1]
##   district arrest primary_type          n proporcion
##   <fct>    <fct>  <fct>             <int>      <dbl>
## 1 8        FALSE  WEAPONS VIOLATION   394      0.325
## 2 8        TRUE   WEAPONS VIOLATION   817      0.675

La probabilidad de que sea un crimen de armas en un distrito rico como el 18 (Near-north side) es de un 0.02%, una tasa bajísima si lo comparamos con la probabilidad de que se de en un distrito del sur como puede ser el 8, que tiene una probabilida de un 0.1% una probabilidad 5 veces mayor. Por otra parte, se ve que los crimenes mas violentos en los distritos mas acomodados están mas controlados, teniendo en cuenta que la tasa de arrestos en el 18 es un 10% mayor.

Son indepedientes todos estos factores?

print("Independencia de Crimenes y Arrestos")
## [1] "Independencia de Crimenes y Arrestos"
chisq.test(chicago_crime_subset$primary_type,chicago_crime_subset$arrest)
## 
##  Pearson's Chi-squared test
## 
## data:  chicago_crime_subset$primary_type and chicago_crime_subset$arrest
## X-squared = 377087, df = 7, p-value < 2.2e-16
print("Independencia de Distritos y Arrestos")
## [1] "Independencia de Distritos y Arrestos"
chisq.test(chicago_crime_subset$district,chicago_crime_subset$arrest)
## 
##  Pearson's Chi-squared test
## 
## data:  chicago_crime_subset$district and chicago_crime_subset$arrest
## X-squared = 35773, df = 22, p-value < 2.2e-16
print("Independencia de Crimenes y Distritos")
## [1] "Independencia de Crimenes y Distritos"
chisq.test(chicago_crime_subset$primary_type,chicago_crime_subset$district)
## Warning in chisq.test(chicago_crime_subset$primary_type,
## chicago_crime_subset$district): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  chicago_crime_subset$primary_type and chicago_crime_subset$district
## X-squared = 152958, df = 154, p-value < 2.2e-16
print("Independencia de Crimenes y Meses")
## [1] "Independencia de Crimenes y Meses"
chisq.test(chicago_crime_subset$primary_type,chicago_crime_subset$month)
## 
##  Pearson's Chi-squared test
## 
## data:  chicago_crime_subset$primary_type and chicago_crime_subset$month
## X-squared = 4664.9, df = 77, p-value < 2.2e-16
print("Independencia de Arrestos y Meses")
## [1] "Independencia de Arrestos y Meses"
chisq.test(chicago_crime_subset$arrest,chicago_crime_subset$month)
## 
##  Pearson's Chi-squared test
## 
## data:  chicago_crime_subset$arrest and chicago_crime_subset$month
## X-squared = 1836.5, df = 11, p-value < 2.2e-16
print("Independencia de Distritos y Meses")
## [1] "Independencia de Distritos y Meses"
chisq.test(chicago_crime_subset$district,chicago_crime_subset$month)
## Warning in chisq.test(chicago_crime_subset$district,
## chicago_crime_subset$month): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  chicago_crime_subset$district and chicago_crime_subset$month
## X-squared = 1429.7, df = 242, p-value < 2.2e-16

El pValor es muy pequeño por lo que se rechaza que los factores son independientes (hipotesis nula). Por ello, considero que la dependencia de los crimenes con los distritos y los arrestos son completamente dependientes y esa relacion debe ser estudiada para hallar posibles soluciones.

Correlación Entre Distritos, Arrestos y Crímenes

En esta seccion se va a mostrar como estan relacionados los crimenes con los arrestos y los distritos. Esto sirve de apoyo para confirmar las teorías anteriormente expuestas de una forma gráfica.

En estos primeros gráficos se ven esas relaciones por separado.

ggplot(data = chicago_crime_subset) +
  geom_count(mapping = aes(x = primary_type, y = district)) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

ggplot(data = chicago_crime_subset) +
  geom_count(mapping = aes(x = arrest, y = primary_type)) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

ggplot(data = chicago_crime_subset) +
  geom_count(mapping = aes(x = arrest, y = district)) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

En estos diagramas se ve la incidencia de las relaciones que se llevan estudiando durante el análisis completo.

En el primero se ve como los robos sin violencia es el crimen mas común en la ciudad, en general. Mientras, otrr crimen no violento como fraude, destaca en los distritos mas ricos como el 1, 18 y 19. Los delitos mas violentos como drogas, daños o armas estan bastante focalizados en el sur y el oeste (Sobre todo las drogas)

En cuanto a arrestos y crímenes, se ve que en los crimenes no violentos, la diferencia de arrestos y no arrestos es considerable. Lo mismo pasa con delitos mas violentos pero en menor medida, como los asaltos y los crimenes violentos. Como hemos visto a lo largo del documento, las drogas y las armas tienen una tasa de arresto mucho mayor que el resto.

Por último, solo en los distritos 11 y 15 la tasa de arrestos es positiva, coincidiendo con los mas afectados por drogas y armas, respectivamente.

Ahora, muestro en el mismo gráfico esas relaciones con la probabilidad de arresto en cada caso. Cuanto mas turquesa, mas probabilidad de que se produzca un arresto.

ggplot(data = chicago_crime_subset, aes(x=primary_type, y=district, fill=arrest)) + 
  geom_tile() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

# Correlacion
ggplot(chicago_crime_subset,aes(x=district,y=primary_type,color=arrest))+geom_point(alpha=0.5)

En estos graficos podemos ver con mas claridad las relaciones anteriores.

CONCLUSIONES FINALES

Por Crimen

Analizando crimen a crimen voy a exponer ahora mis conclusiones finales basados en todo el analisis.

  • ASALTO: Este crimen es el que mas duda me genera, pero haciendo un analisis particular espero aclarar esas dudas a continuación. Parece extraño ya que el crimen esta repartido bastante equitativamente entre los distritos del sur (pobres) y los mas ricos (1, 18, 19, 24), algo muy extraño como vemos en el resto de crimenes excepto (en menor medida) en crimenes violentos, que pasa algo similar.

  • CRIMENES DE DAÑOS: Este crimen esta repartido mayoritariamente en distritos del sur y oeste y en casi todos los distritos exceptuando el 2 y 5 tiene una tasa de arrestos muy baja.

  • FRAUDE: Uno de los crimenes junto a robos sin violencia que se situan mayoritariamente en barrios ricos, donde la tasa de arrestos es considerablemente baja.

  • DROGAS: El crimen donde el análisis es mas fructífero. Practicamente la totalidad de crimenes de este tipo se dan en los distritos 10, 11 y 15, situados al oeste de la ciudad. Además es, con mucha diferencia el crimen que mas controlado tiene la policia, arrestando a mas del 90% de criminales de este tipo.

  • ROBOS CON VIOLENCIA: Gracias a este último gráfico, nos damos cuenta que este crimen tiene una tasa bastante positiva de arrestos, algo que anteriormente se me habia pasado por alto. Como la mayoría de crimenes violentos, esta repartido mayoritariamente en el sur de la ciudad y el oeste.

  • ROBOS SIN VIOLENCIA: Al no ser un crimen violento, esta localizado en el centro y norte de la ciudad, las “zonas seguras”. Además, la tasa de arrestos es ridicula para ser el crimen mas extendido de la ciudad.

  • CRIMENES VIOLENTOS: Este es otro crimen, como los robos con violencia, donde la tasa de arrestos es algo superior a lo que pensaba, sobretodo teniendo en cuenta que ocurre en ditritos del norte como el 19 y el 22, distritos favorecidos economicamente y tradicionalmente con una tasa muy baja de arrestos.

  • ARMAS: Como los crímenes de drogas, el otro crimen que mas facilmente podemos clasificar. Un crimen exclusivamente del sur de la ciudad y con una tasa de arrestos mucho mayor que la media.

Generales

  1. La primera conclusion que saco es la diferencia de arrestos respecto a crimenes violentos y crímenes menos violentos. La tasa de arrestos de los robos con violencia, drogas, armas e incluso crimenes violentos de por si, es mucho mayor a robos sin violencia y fraude.

  2. Puedo localizar casi inequívocamente tanto los crimenes de drogas (Distritos 10 y 11), armas (Distritos del sur y el 11), fraude (1 (Centro de la ciudad), 18 y 19) y robo sin violencia (1, 18 y 19).

  3. Los crímenes violentos siguen, geográficamente hablando, a las dificultades económicas. Tradicionalmente las zonas pobres de Chicago son el sur (La serie de television “Shameless” lo ejemplifica bastante bien) y el oeste, siendo estos los barrios tradicionalmente latinos. Como se ve claramente a lo largo de este análisis, los crimenes mas violentos se situan en estas zonas.

  4. Los crímenes menos violentos se producen en las zonas mas acomodadas, donde las autoridades están mejor financiadas y tratan de contener mejor los crímenes mas violentos.

  5. El fraude se produce, lógicamente, en los distritos financieros de la ciudad que son el 1 (Popularmente llamado “Loop”), 18 y 19, donde se situan tanto los mas ricos de la ciudad como la totalidad de grandes empresas.

QUE PASA CON LOS ASALTOS?

Hay una teoría muy arraigada en la ciudad de Chicago que dice que la violencia sube del sur al norte a través de la Red Line del CTA, el transporte público de Chicago. Esta teoría es bastante real, como se puede ver en los siguientes artículos: https://www.chicagotribune.com/investigations/ct-cta-l-crime-up-arrests-down-20190919-lu2n2mc2i5akhdrhatuexp72oy-story.html y https://www.chicagotribune.com/business/transportation/ct-biz-cta-crime-spike-new-patrols-20200110-6nihubfvsjgalf337xqxbme3bq-story.html

Voy a intentar ver si esta teoría puede explicar el comportamiento extraño en los crímenes de asalto y, en menor medida los crimenes violentos.

Lo primero es situar los crímenes de asaltos y crímenes violentos en el mapa.

assault <- na.omit(assault)
setDT(assault)

## MAKE CONTOUR LINES
## Assault
kde_assault <- bkde2D(assault[ , list(longitude, latitude)],
              bandwidth=c(.0001, .0001), gridsize = c(75,75))
## Warning in bkde2D(assault[, list(longitude, latitude)], bandwidth = c(1e-04, :
## Binning grid too coarse for current (small) bandwidth: consider increasing
## 'gridsize'
CL_assault <- contourLines(kde_assault$x1 , kde_assault$x2 , kde_assault$fhat)

## EXTRACT CONTOUR LINE LEVELS
LEVS_assault<- as.factor(sapply(CL_assault, `[[`, "level"))
NLEV_assault <- length(levels(LEVS_assault))

## CONVERT CONTOUR LINES TO POLYGONS
pgons_assault <- lapply(1:length(CL_assault), function(i)
    Polygons(list(Polygon(cbind(CL_assault[[i]]$x, CL_assault[[i]]$y))), ID=i))
spgons_assault = SpatialPolygons(pgons_assault)

## Violent Crimes
setDT(violent_crime)
kde_vc <- bkde2D(violent_crime[ , list(longitude, latitude)],
              bandwidth=c(.0001, .0001), gridsize = c(75,75))
## Warning in bkde2D(violent_crime[, list(longitude, latitude)], bandwidth =
## c(1e-04, : Binning grid too coarse for current (small) bandwidth: consider
## increasing 'gridsize'
CL_vc <- contourLines(kde_vc$x1 , kde_vc$x2 , kde_vc$fhat)

## EXTRACT CONTOUR LINE LEVELS
LEVS_vc<- as.factor(sapply(CL_vc, `[[`, "level"))
NLEV_vc <- length(levels(LEVS_vc))

## CONVERT CONTOUR LINES TO POLYGONS
pgons_vc <- lapply(1:length(CL_vc), function(i)
    Polygons(list(Polygon(cbind(CL_vc[[i]]$x, CL_vc[[i]]$y))), ID=i))
spgons_vc = SpatialPolygons(pgons_vc)

leaflet() %>% addTiles() %>%
    addPolygons(data = spgons_vc, color = brewer.pal(NLEV_vc, name = "RdPu")[LEVS_vc], group = "Violent Crimes") %>%
    addPolygons(data = spgons_assault, color = brewer.pal(NLEV_assault, name = "YlOrRd")[LEVS_assault], group = "Assault") %>%
    addLayersControl(overlayGroups = c("Assault", "Violent Crimes"),options = layersControlOptions(collapsed = FALSE))
## Warning in brewer.pal(NLEV_vc, name = "RdPu"): n too large, allowed maximum for palette RdPu is 9
## Returning the palette you asked for with that many colors

En los mapas se ven claramente como estos crimenes se reparten en una linea mas o menos vertical cuasi paralela a la costa.

Ahora vamos a situar en el mapa los crimenes que ocurren en plataformas de metro (CTA PLATFORM) y la linea roja de metro, que es la que queremos estudiar. Los datos de las localizaciones de las plataformas las sacamos de: https://data.cityofchicago.org/Transportation/CTA-System-Information-List-of-L-Stops/8pix-ypme

## Lo primero es situar los cmimenes en el metro en un mapa
## Ahora leo el dataset de las localizaciones de las paradas y selecciono las correspondientes a la línea roja, que es la que va de norte a sur.
cta_locations <- read.csv(file = "Datos/CTA_Stops.csv", #Name of text file.
                      sep = ",",                       #Separation character.
                      header = TRUE,                   #If column names are in the first row.
                      na.strings = "NA",               #Character to be marked as missing value.
                      stringsAsFactors = FALSE)

cta_locations <- cta_locations %>% tidyr::extract(Location, c("Latitude", "Longitude"), "\\(([^,]+), ([^)]+)\\)")
cta_locations$Latitude <- as.numeric(cta_locations$Latitude)
cta_locations$Longitude <- as.numeric(cta_locations$Longitude)

red_line <- subset(cta_locations, RED == "true")
red_line$Latitude <- as.numeric(red_line$Latitude)
red_line$Longitude <- as.numeric(red_line$Longitude)

setDT(red_line)

leaflet()%>%
  addTiles() %>%
    addPolygons(data = spgons_assault, color = brewer.pal(NLEV_assault, name = "YlOrRd")[LEVS_assault], group = "Assault") %>%
    addPolygons(data = spgons_vc, color = brewer.pal(NLEV_vc, name = "YlGn")[LEVS_vc], group = "Violent Crimes") %>%
    addCircles(data = red_line, color = brewer.pal(2, name = "YlOrRd")[3], group = "Red Line") %>%
    addCircles(data = cta_locations, color = brewer.pal(2, name = "RdPu")[3], group = "All Lines") %>%
    addLayersControl(overlayGroups = c("Assault","Violent Crimes", "All Lines","Red Line"),options = layersControlOptions(collapsed = FALSE))
## Warning in brewer.pal(NLEV_vc, name = "YlGn"): n too large, allowed maximum for palette YlGn is 9
## Returning the palette you asked for with that many colors
## Warning in brewer.pal(2, name = "YlOrRd"): minimal value for n is 3, returning requested palette with 3 different levels
## Assuming "Longitude" and "Latitude" are longitude and latitude, respectively
## Warning in brewer.pal(2, name = "RdPu"): minimal value for n is 3, returning requested palette with 3 different levels
## Assuming "Longitude" and "Latitude" are longitude and latitude, respectively

Como se ve comparando las diferentes opciones del mapa, la línea roja del CTA es donde mas crímenes hay. Se comprueba además que esta línea atraviesa la ciudad de sur a norte y viceversa, de la zona mas pobre a la mas rica, por lo que tiene bastante sentido que la violencia y criminalidad avance en esa dirección. Esta explicación podría servir como razón para explicar porque razón no se ha podido sacar un análisis mas preciso de lo que ocurre con los asaltos y, en menor medida, los crimenes violentos.

Esta podría ser una de las razones